package com.sprouting.ops.dao;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sprouting.ops.model.OpsDeploy;
import com.sprouting.ops.model.qo.OpsDeployQo;
import com.sprouting.ops.model.vo.DeployPortVo;
import com.sprouting.ops.model.vo.EnvAccountVo;
import com.sprouting.ops.model.vo.OpsDeployVo;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * 部署信息表-组件和组件;(OpsDeploy)(OPS_DEPLOY) 表数据库访问层
 *
 * @author ：lx（长沙麓谷）
 * @date 创建时间：2025-06-29 22:18:44
 */
public interface OpsDeployDao extends BaseMapper<OpsDeploy> {

    /**
     * 分页查询 部署信息表-组件和组件;
     * @param page 分页参数
     * @param query 查询参数
     * @return
     */
    Page<OpsDeployVo> getListPage(Page page, @Param("query") OpsDeployQo query);

    /**
     * 根据计算机id查询应用
     * @param computerServerId 计算机id
     * @return
     */
    List<DeployPortVo> getAppByComputerServerId(String computerServerId);

    /**
     * 根据计算机id查询组件
     * @param computerServerId 计算机id
     * @return
     */
    List<DeployPortVo> getComponentByComputerServerId(String computerServerId);

    /**
     * 根据类型场所查询环境账号-应用
     * @param siteId 场所id
     * @return
     */
    List<EnvAccountVo> getEnvAccountApp(String siteId);

    /**
     * 根据类型场所查询环境账号-组件
     * @param siteId 场所id
     * @return
     */
    List<EnvAccountVo> getEnvAccountComponent(String siteId);

    /**
     * 根据计算机查询绑定
     * @param computerServerId 计算机id
     * @return
     */
    List<OpsDeploy> getByComputerServerId(String computerServerId);

    /**
     * 根据环境删除部署信息，不含依赖信息
     * @param envId 环境信息
     */
    void delByEnv(String envId);
}
